• 使用sql语句desc table_name可以显示table_name表中的字段名以及Type等属性

  • 使用sql语句alter table employees modify email null修改email字段的属性为可以为null

  • mysql中使用sql语句生成一张表并且同时指定表的编码:

    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE USER(
    id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
    nickname VARCHAR(45) NOT NULL,
    PASSWORD VARCHAR(45) NOT NULL,
    first_name VARCHAR(45) DEFAULT NULL,
    last_name VARCHAR(45) DEFAULT NULL
    ) CHARACTER SET utf8 COLLATE utf8_general_ci;

    注意utf8不能写成utf-8

  • mysql中使用sql语句生成一张表并且同时指定外键:

    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE blog(
    id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
    title VARCHAR(100) NOT NULL,
    content VARCHAR(255) DEFAULT NULL,
    user_id INT(11) NOT NULL,
    CONSTRAINT FK_ID FOREIGN KEY(user_id) REFERENCES USER(id)
    ) CHARACTER SET utf8 COLLATE utf8_general_ci;
  • 如下方式可以在创建表的同时指定索引:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE DATABASE seckill;
    USE seckill;
    CREATE TABLE seckill(
    `seckill_id` BIGINT PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '商品库存id',
    `name` VARCHAR(255) NOT NULL COMMENT '商品名称',
    `number` INT NOT NULL COMMENT '商品数量',
    `create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `start_time` TIMESTAMP NOT NULL COMMENT '秒杀开始时间',
    `end_time` TIMESTAMP NOT NULL COMMENT '秒杀结束时间',
    KEY idx_start_time(start_time), // 指定索引,KEY表示索引,idx_start_time为新建的索引的名字
    KEY idx_end_time(end_time),
    KEY idx_create_time(create_time)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='秒杀库存表'; // 指定字符集并且添加描述,注意和字段添加描述的不同
  • 对于自增主键,可以在创建数据库的时候指定自增主键的起始值:

    1
    CREATE TABLE seckill() ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8 COMMENT='秒杀库存表'
  • 执行下面的语句可以查看表的创建过程:

    1
    show create table seckill\G;

    因此在创建数据库的时候通过COMMENT添加注释可以有助于理解。

  • 修改表的某个字段的属性:

    1
    alter table employees modify email null;
  • 给某个表添加一列:

    1
    ALTER TABLE tbl_employee ADD COLUMN d_id INT(11);
  • 给某个表添加外键

    1
    ALTER TABLE tbl_employee ADD CONSTRAINT fk_emp_dept FOREIGN KEY(d_id) REFERENCES tbl_dept(id);
  • 联合主键及索引

    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE `appointment` (
    `book_id` bigint(20) NOT NULL COMMENT '图书ID',
    `student_id` bigint(20) NOT NULL COMMENT '学号',
    `appoint_name` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_STAMP COMMENT '预约时间', -- 当执行update操作时,并且字段有ON UPDATE CURRENT_STAMP属性,则字段无论值有没有变化,它的值也会跟着更新为当前UPDATE操作时的时间
    PRIMARY KEY (`book_id`, `student_id`),
    INDEX `idx_appoint_time` (`appoint_time`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='预约图书表'